using System;
using System.Xml;
using System.Xml.Serialization;
using System.Collections.ObjectModel;
using System.Text;

namespace MJB.UI.ContentEditor.Document {
	
	/// <summary>
	/// This interface defines an object that is capable of abstracting 
	/// the version of document from the consumer who is reading and writing 
	/// data to it.
	/// </summary>
	public interface IDocumentReader : IXmlSerializable {

		/// <summary>
		/// This property gets / sets the title property.
		/// </summary>
		string Title {
			get;
			set;
		}

		/// <summary>
		/// This property gets / sets the description property.
		/// </summary>
		string Description {
			get;
			set;
		}

		/// <summary>
		/// This property gets / sets the keywords property.
		/// </summary>
		string Keywords {
			get;
			set;
		}

        /// <summary>
        /// Gets / sets the file path of this document reader.
        /// </summary>
        string FilePath {
            get;
            set;
        }

        /// <summary>
        /// Gets / sets the file name.
        /// </summary>
        string FileName {
            get;
            set;
        }

		/// <summary>
		/// Gets the version for this document reader.
		/// </summary>
		string VersionNamespace {
			get;
		}

		/// <summary>
		/// This property gets / sets the sections list.
		/// </summary>
		ObservableCollection<ISection> Sections {
			get;
			set;
		}

		/// <summary>
		/// Creates and returns a new section object.
		/// </summary>
		/// <returns></returns>
		ISection CreateNewSection();

	}

}
